#include "sGuiObject.h"
#include "sGui.h"

namespace sgui
{

#pragma warning (push)
#pragma warning (disable : 4355)
	sGUIObject::sGUIObject(sGUI& gui) :
		m_gui(gui),
		m_id(gui.registerGuiObject(this))
	{}
#pragma warning (pop)

	sGUI& sGUIObject::getGui()
	{
		return m_gui;
	}
	const sGUI& sGUIObject::getGui() const
	{
		return m_gui;
	}

	ID sGUIObject::getID() const
	{
		return m_id;
	}
	
	void sGUIObject::save(db::Record& file) const
	{
		file[L"id"].Set((u32)m_id);
	}

	void sGUIObject::load(const db::Record& file)
	{
		ID id = (ID)file[L"id"].GetAsInt();
		getGui().refreshGuiObject(m_id, id);
		m_id = id;
	}

	void sGUIObject::clear()
	{
		//
	}


	sGUIObject::~sGUIObject()
	{
		getGui().unregisterGuiObject(m_id);
	}

};